/**
 * 获得sd卡根目录
 */
function getSDRoot(){
	// 导入android.os.Environment类对象
	var environment = plus.android.importClass("android.os.Environment");
	// 判断SD卡是否插入
	if(environment.getExternalStorageState() !== environment.MEDIA_MOUNTED){
		plus.nativeUI.toast('没有找到SD卡');
		return;
	}
	return environment.getExternalStorageDirectory();
}

/**
 * 创建文件夹
 * @param {Object} path
 */
function creatFolder(path){
	var File = plus.android.importClass("java.io.File");
	var fd = new File(path);
	if(!fd.exists()){
		fd.mkdirs();
	}
}
/**
 * 创建文件
 * @param {Object} path 文件路径
 * @param {Object} name 文件名
 */
function createFile(path,name){
	var File = plus.android.importClass("java.io.File");
	var fd = new File(path,name);
	if(!fd.exists()){
		fd.createNewFile();
	}
}
/**
 * 写txt文件
 * @param {Object} filepath 文件路径
 * @param {Object} newstr 字符串
 */
function writeTxtFile(filepath,newstr){
	var FileWriter = plus.android.importClass("java.io.FileWriter");
	var fw = new FileWriter(filepath,true);//文件路径(包括文件名称)
	fw.write(newstr);
	fw.flush();
	fw.close();
}
/**
 * 清空文件内容
 * @param {Object} filepath 文件路径
 */
function clearTxtFile(filepath){
	var FileWriter = plus.android.importClass("java.io.FileWriter");
	var File = plus.android.importClass("java.io.File");
	var f = new File(filepath);
	var fw = new FileWriter(f);//文件路径(包括文件名称)
	fw.write("");
	fw.flush();
	fw.close();
}


/**
 * 读文件大小
 * @param {Object} file
 */
function readFileSize(file){
	var FileInputStream = plus.android.importClass("java.io.FileInputStream");
    var fileSize = new FileInputStream(file);
	var size = fileSize.available();
	var fileSizeString;
	if(size == 0){
		fileSizeString = "0B";
	}else if(size < 1024){
		fileSizeString = size + "B";
	}else if(size < 1048576){
		fileSizeString = (size/1024).toFixed(2) + "KB";
	}else if (size < 1073741824){
		fileSizeString = (size/1048576).toFixed(2) + "MB";
	}else{
		fileSizeString = (size/1073741824).toFixed(2) + "GB";
	}
	return fileSizeString;
}

/**
 * 读取文件夹下子文件夹及子文件数目
 * @param {Object} file
 */
function readSonFilenum(file){
	var subFile = plus.android.invoke(file,"listFiles");
	var subLen = subFile.length;
	var obj = {
		subFolderNum: 0,
		subFileNum: 0
	};
	for(var k=0;k<subLen;k++){
		if(!plus.android.invoke(subFile[k],"isHidden")){
			if(plus.android.invoke(subFile[k],"isDirectory")){
				obj.subFolderNum++;
			}else{
				obj.subFileNum++;
			}
		}
	}
	return obj;
}

/**
 * 通过两点计算运行方向
 * @param {Object} lat_a  a点纬度y
 * @param {Object} lng_a  a点经度x
 * @param {Object} lat_b  b点纬度y
 * @param {Object} lng_b  b点经度x
 */
function gps2d(lat_a, lng_a, lat_b, lng_b) {
	var d = 0;
	lat_a = lat_a * Math.PI / 180;
	lng_a = lng_a * Math.PI / 180;
	lat_b = lat_b * Math.PI / 180;
	lng_b = lng_b * Math.PI / 180;
	d = Math.sin(lat_a) * Math.sin(lat_b) + Math.cos(lat_a) * Math.cos(lat_b) * Math.cos(lng_b - lng_a);
	d = Math.sqrt(1 - d * d);
	d = Math.cos(lat_b) * Math.sin(lng_b - lng_a) / d;
	d = Math.asin(d) * 180 / Math.PI;
	return d;
}
//计算旋转角度
function gpsAngle(x,y,x1,y1){
	var dx = x1 - x;
    var dy = y1 - y;
    var distance = Math.sqrt(dx * dx + dy * dy);//距离
    var angle = Math.atan2(dx, dy);//角度
    var rotation = angle / Math.PI * 180;//旋转
    return rotation;
}

var EARTH_RADIUS = 6378137.0;
/**
 * 通过两点计算运行距离
 * @param {Object} lat_a  a点纬度y
 * @param {Object} lng_a  a点经度x
 * @param {Object} lat_b  b点纬度y
 * @param {Object} lng_b  b点经度x
 */
function gps2m(lat_a, lng_a, lat_b, lng_b) {
	var radLat1 = (lat_a * Math.PI / 180.0);
	var radLat2 = (lat_b * Math.PI / 180.0);
	var a = radLat1 - radLat2;
	var b = (lng_a - lng_b) * Math.PI / 180.0;
	var s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) +
		Math.cos(radLat1) * Math.cos(radLat2) *
		Math.pow(Math.sin(b / 2), 2)));
	s = s * EARTH_RADIUS;
	s = Math.round(s * 10000) / 10000;
	return s;
}

function getDirection(num){
	if(22.5 < num && num < 67.5){
		return "东北";
	}else if(67.5 < num && num < 112.5){
		return "东方";
	}else if(112.5 < num && num < 157.5){
		return "东南";
	}else if(157.5 < num && num < 202.5){
		return "南方";
	}else if(202.5 < num && num < 247.5){
		return "西南";
	}else if(247.5 < num && num < 292.5){
		return "西方";
	}else if(292.5 < num && num < 337.5){
		return "西北";
	}else{
		return "北方";
	}
}

export{
	getSDRoot,
	creatFolder,
	createFile,
	writeTxtFile,
	clearTxtFile,
	readFileSize,
	readSonFilenum,
	gps2d,
	gpsAngle,
	gps2m,
	getDirection
}